package com.kingyea.mobilepolice.apimanage.log.service;

import com.kingyea.mobilepolice.apimanage.log.bean.InvokLog;
import com.kingyea.mobilepolice.apimanage.log.vo.serviceFrequencyMonitoringCondition;
import com.kingyea.mobilepolice.apimanage.log.vo.serviceFrequencyMonitoringVO;

import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;

/**
 * @author Mr.Lin
 * @version v1.0.0
 * @description InvokLog 接口
 * @date Created in 2018-03-11 16:32:09
 */
public interface InvokLogService {

    /**
     * 通过ID查找对象
     *
     * @param id
     * @return
     */
    InvokLog getById(Long id) throws Exception;

    /**
     * 列表
     *
     * @param invokLog
     * @return
     */
    List<InvokLog> list(InvokLog invokLog) throws Exception;

    /**
     * 删除
     *
     * @param id
     * @return
     */
    int deleteById(Long id) throws Exception;

    /**
     * 添加
     *
     * @param invokLog
     * @return
     */
    InvokLog save(InvokLog invokLog) throws Exception;

    /**
     * 异步添加方法，给系统日志用
     *
     * @param invokLog
     * @return
     */
    Future<InvokLog> asyncSave(InvokLog invokLog) throws Exception;

    /**
     * 更新
     *
     * @param invokLog
     * @return
     */
    InvokLog update(InvokLog invokLog) throws Exception;

    Object searchByCondition(Map<String, Object> map) throws Exception;

    /**
     * 带条件统计调用日志数量
     *
     * @return
     */
    Integer countByCondition(Map<String, Object> map) throws Exception;

    List<serviceFrequencyMonitoringVO> getServiceFrequencyMonitoring(serviceFrequencyMonitoringCondition condition) throws Exception;

    /**
     * 服务质量统计
     *
     * @param map
     * @return
     * @throws Exception
     */
    Object searchServiceQualityMonitoring(Map<String, Object> map) throws Exception;
}
